The present invention relates generally to an update synchronization and/or transformation process between data in a client and replicas of the data in information management systems.
With the rapid advancement of semiconductor, storage and display technologies, handheld or mobile devices, which may only be occasionally connected to the network, have become increasingly popular. The ways that mobile devices such as 3Com""s PALM PILOT(trademark) are being used have also become very versatile. For example, a PALM PILOT(trademark) user may have an e-mail application that is to be synchronized with a Lotus NOTES(trademark) e-mail system in an office desktop. There may also be a stock quote application in the PALM PILOT(trademark) which gets updated by synchronizing with a well-known stock quote site located in the Internet. There may also be a PALM PILOT(trademark) expense application that is to be synchronized with home PC finance software. Therefore, it is quite possible that various handheld applications within one device need to synchronize with different applications in various information management systems (such as Lotus NOTES(trademark), Microsoft EXCHANGE(trademark), file systems, relational databases, object-oriented databases) running on networked computers. It is also possible that one handheld application (such as e-mail) has different versions for different handheld devices (e.g., PALM PILOT(trademark), Sharp""s ZAURUS(trademark), Psion PLC""s PSION(trademark) and various other palmtop devices running Microsoft WINDOWS CE(trademark)).
Because handheld devices such as PALM PILOTs(trademark) are typically only occasionally connected to the network with the connection lasting only a short time, it is critical that the synchronization processes between the applications in the handhelds and their counterparts in various networked computers be very efficient (so that the synchronization process can be successfully completed while the handhelds are connected to the network). With the handheld devices typically offering less CPU power and less memory for computation, the synchronization processes are usually not conducted inside the handheld devices.
Here, a computer hosting the replicas of data from handheld devices is called a replica host, or replica source. Because handheld devices generally have less computing power and memory than a replica host, the handheld devices typically conduct synchronization inside their replica hosts, which are desktop PCs. Typically, synchronization is first initiated by pushing a handheld device button (e.g., the HotSync button in a PALM PILOT(trademark)). Immediately after the button is pushed, a synchronization manager software in the replica host (e.g., PALM PILOT""s(trademark) HotSync Manager in the desktop personal computer (PC) takes over the synchronization process. In the case of a PALM PILOT(trademark), the HotSync Manager conducts synchronization for a PALM PILOT(trademark) application by executing an application-specific program (called Conduit in the PALM PILOT(trademark)) which synchronizes this application between the PALM PILOT(trademark) and a desktop PC through application-specific logic. If multiple applications need to be synchronized, the HotSync Manager executes each of their corresponding Conduits in sequential order. Based on this approach, synchronization is always conducted between one PC and one handheld device. Simultaneous synchronization between multiple handheld devices and one PC is not available.
In general, conducting synchronization processes directly in the replica host is very limiting. The reason is that there may exist many applications (such as e-mail, calendar, address book) that each can be shared by many different handheld devices (e.g., PALM PILOT(trademark), ZAURUS(trademark), PSION(trademark)). Each application may require a different synchronization logic for each different device. To process synchronization for all applications and all devices properly, a replica host may need to install and manage many different versions of the synchronization processes in order to handle different handheld devices. Thus, conducting synchronization processes in the replica hosts creates a heavy burden in management of the different handheld devices and their synchronization processes. For many replica hosts, their most mission-critical task is not to synchronize with various handhelds, but to run as an information server such as a database server, a groupware server, or as a personal desktop computing device. Running synchronization on them therefore detracts from their mission-critical tasks.
A more efficient approach to management synchronization between multiple handheld devices and replica hosts is to deploy synchronization proxies (or synchronization (sync) servers, or synchronization proxy servers, or simply sync proxies) that maintain persistent network connections, to conduct synchronization on behalf of both the handhelds and the replica hosts (devices hosting the replicas also maintain a persistent network connection).
To synchronize, a handheld first establishes a network connection. Once connected, instead of making a direct connection to the targeted replica host for synchronization, it makes a synchronization request to a sync proxy. Upon receiving such a request, the sync proxy establishes a connection to the targeted replica host and starts the synchronization process by issuing input/output requests to both the handheld and its replica host. A straightforward design of the synchronization proxy is for the proxy to maintain all device-specific and application-specific synchronization programs that can handle all the handheld device types and all the information management system types hosted by the replica hosts. This means that each application must have an unique synchronization program written specifically for any combination between all the handheld device types and all the information management systems hosting the replicas of handheld data. For example, a synch proxy may maintain four different synchronization programs for an e-mail application in order to support both PALM PILOT(trademark) and WINDOWS CE(trademark) based handheld devices and both Microsoft EXCHANGE(trademark) and Lotus NOTES(trademark) e-mail systems for PCs. The first synchronization program is for synchronizing between PALM PILOT(trademark) and EXCHANGE(trademark), the second between PALM PILOT(trademark) and Lotus NOTES(trademark), the third between WINDOWS CE(trademark) and EXCHANGE(trademark), and the fourth between WINDOWS CE(trademark) and Lotus NOTES(trademark).
Another aspect of this straightforward design of the sync proxy is to allow the synchronization input/output interface between the synchronization proxy and a specific information management system hosting replicas of handheld data to be the same for different handheld devices. It is the sync proxy that handles the differences between handheld devices, not each replica host. The actual synchronization processes are conducted by the synchronization proxies. The role of both the handhelds and the replica hosts during synchronization is simply to respond to the synchronization input/output calls made by the synchronization proxy. These calls are typically in the form of adding, retrieving, deleting, and updating information. The computation burden and complexity of the synchronization logic for both handhelds and replica hosts therefore is much reduced.
One important feature of this straightforward sync proxy approach is that in order to properly synchronize between any applications for all device types and any information management systems for all replica hosts, a sync proxy must be able to invoke, during a synchronization task, a specific synchronization logic based on the target application, device, and the information management system. The current straightforward sync proxy approach accomplishes this by first restricting its support to a small number of applications, devices and information management systems to reduce the total number of synchronization logic variations required for proper synchronization; and by pre-configuring the synchronization logic as dynamically linkable (during synchronization runtime) codes stored in its disk memory. An important issue of such an approach is the difficulty in the management of all the various synchronization logic. If more applications, devices, and management information systems are supported by an organization, the number of sync logic variations increases dramatically. Each sync proxy therefore must be able to link the right sync logic. Furthermore, in an organization with multiple sync proxies deployed, any changes and updates to a sync logic creates a difficult software management task of propagating these changes and updates to the right files of all sync proxies. The improvement of the management of the synchronization logic is one focus of the present invention.
Another feature of the current straightforward sync proxy approach is that the various synchronization logic are pre-coded by the makers of the sync proxies, some of which also provide a development platform for users to augment or modify the synchronization logic. The Sync proxy makers do not generally create the applications, the devices, or the information management systems. Thus, they do not have the expert knowledge of this software and hardware and must limit the scope of their support. The scalability of current sync proxies in terms of supporting more handheld applications, more handheld devices, and more management information systems is very limited. The present invention addresses this limitation.
Furthermore, the straightforward sync proxy is a standalone system whose scalability in terms of processing simultaneous sync requests is limited by the computing power of the machine on which the sync proxy is installed. No collaboration between sync proxies in terms of load balancing is available in the straightforward sync proxy approach. This lack of collaboration between sync proxies may potentially create unbalanced loading among proxies which causes some sync requests to be delayed or not serviced. The present invention addresses this need.
In accordance with the aforementioned needs, the present invention is directed to an improved method, apparatus and program storage device for a synchronization proxy (or sync proxy or sync server) that serves as an intermediary and a computation platform in performing update synchronization between clients, examples of which include but are not limited to: an Internet appliance; a handheld or palmtop device; a smart phone or intelligent pager; and information management systems that host the replicas of data from these devices. The clients may be disconnected from the network some or most of the time while the information management systems remain connected almost all the time. The data in the client devices and/or their replicas in the information management systems may be updated independently of each other.
According to the present invention, a method is provided for a client to request synchronization services from a sync proxy. For example, a handheld device issues a synchronization request (or sync request) to this proxy. A sync request may involve one or more applications to be synchronized. After the sync request is accepted, the sync proxy processes synchronization for all applications requested to be synchronized for this handheld device in a sequential fashion. For each application to be synchronized, the handheld may provide a sync identifier which may include the name of the application to be synchronized, the ID of the replica host for this application, the ID of the program with application specific synchronization logic for this application (sync logic), and the ID of the program with a device specific data transformation method for this handheld device (transformation code). The IDs preferably includes a unique identifier (or a unique name) and a network address from which this information can be retrieved.
Alternatively, during the sync processing of an application, instead of the handheld device sending the information directly to the sync proxy, the handheld device may send a sync identifier which may only include some identification information of the user, the handheld device, and the application to be synchronized, as well as the address of a directory service in which the name of the application and the aforementioned three pieces of information (i.e., the ID of the replica host for this application, the ID of the sync logic for this application, and the ID of the transformation code for this handheld device) is stored.
An example of an adaptive sync server for synchronizing data between a client and a remote host replica, which stores a replica of data on the client, having features of the present invention includes: sync acceptor logic for identifying a replica host and a sync logic which is application specific to a data type associated with the client and the remote host; wherein the sync logic can be located anywhere on a network remote to the sync server and the remote host, in response to a sync request; and sync handler logic, coupled to the sync acceptor logic, for retrieving remote sync logic from the network, connecting to the remote and synchronizing the data between the client and the remote host using retrieved sync logic. The sync request can also include information for identifying a device specific transformation code for converting data between the client and the remote host during synchronization; wherein the sync handler logic includes means for retrieving the transformation code based on the information and converting the data between the client and the remote host based on the device specific transformation code. Here, the device specific transformation code can be locally or remotely located anywhere on the network.
Another example of an adaptive sync server for transforming data between a client, and a remote host replica storing a replica of data on the client, having features of the present invention includes: sync acceptor logic for identifying the remote replica host and a device specific transformation code for transforming the data on the remote host to that of a device type associated with the client, wherein the transformation code can be located anywhere on a network remote to the sync server and the remote host, in response to a request; and sync handler logic, coupled to the sync acceptor logic, for retrieving remote transformation code and transforming the data between the client and the remote host based on the device specific transformation code. The request can include a sync request for identifying a sync logic, which is application specific to a data type associated with the client and the remote host, in response to a sync request; and means for retrieving the sync logic, connecting to the remote host and synchronizing the data between the client and the remote host during the transformation.
According to another aspect of the present invention, a method is provided for the sync proxy to receive, accept, and process sync requests made from the handheld devices. In the present invention, a sync proxyxe2x80x94upon receiving a sync request from a handheld devicexe2x80x94conducts synchronization and/or transformation for one or more handheld applications. For each handheld application, the proxy may receive the aforementioned name of the application, the replica host ID, sync logic ID, and transformation code ID either directly from the requesting handheld device or indirectly from a directory service specified by the requesting handheld device. To synchronize an application, the sync proxy may retrieve the sync logic associated with this application from the network address specified in the sync logic ID for this application sent by the requesting handheld device. The sync proxy then establishes a network connection with the replica host associated with this application based on its replica host ID received from the requesting handheld device.
According to yet another aspect of the present invention, to process synchronization for this application, the sync proxy executes the retrieved sync logic for this application. During the execution of the sync logic for this application, if data transformation is required, the sync proxy makes a connection to the network address of the transformation code associated with this application. The network address of the transformation code is part of the transformation code ID sent by the requesting handheld device. Then the sync proxy processes data transformation if necessary by executing this transformation code during the processing of the sync logic while synchronizing this application. While the present invention does not specify which programming language a sync logic is written with, the feature of the present invention where the sync proxy retrieves a sync logic from a remote host and executes this logic can be thought of in terms of existing Java enabled web processing where a Java program such as an applet can be downloaded by a web browser from a remote host and executed by the web browser locally for web processing.
In one embodiment of the present invention, the synchronization procedure for an application is divided into sync logic and transformation code. The sync logic is the application specific procedure of the synchronization tasks whereas the transformation code is the device dependent conversion process between two types of devices. The separation of these two means that the sync logic for an application can be provided and maintained by the maker of this application whereas the transformation code can be provided and maintained by the maker of the handheld device to which this transformation code applies. The sync proxies no longer have to store and maintain these synchronization or transformation procedures. All they need to do is retrieve the proper sync logic and/or transformation codes during synchronization. This approach greatly improves the management process of the application dependent and device dependent synchronization and/or transformation procedures by the sync proxies.
Such an approach also relieves the makers of the sync proxies from having to develop the synchronization procedures that are specific to the applications and the devices. As a result, the sync proxies can be more scaleable in terms of supporting more applications, devices, and management information systems, as long as the application and device dependent sync procedures are properly developed and maintained and made retrievable by their respective makers.
According to still another aspect of the present invention, a sync proxy may deploy a cache to temporarily store the sync logic or the transformation code for an application in anticipation that these executable data may be used by this sync proxy in the near future. An example of the cache feature of the present invention is described below. First, the sync proxy sets aside a block of memory (either main memory or disk space) as the cache. The sync proxy may adopt an indexing method to search and retrieve a cached sync logic or transformation code (e.g., based on their unique names). To retrieve a cached information (the sync logic or the transformation code for an application), the sync logic, before going out to the network to retrieve it, first searches its cache. If the information is not found in the cache, the sync proxy then goes to the network address associated with the ID of this information to retrieve it and updates the proxy""s cache with it. If the information is found in the cache, the sync proxy retrieves this information from its cache instead of from the network. Then, the sync proxy executing this executable data (the sync logic or the transformation code for an application) by loading this data from the cache for execution.
According to yet another aspect of the present invention, a sync proxy can continuously monitor its computation load (e.g., in terms of the number of sync requests it is concurrently processing) against its computation capacity which is fixed based on its CPU power, the size of its RAM and storage memory, and its network bandwidth capacity. All synchronization proxies within the same network can participate in a real-time sharing with one another of their current computation load and their pre-configured computation capacity. Upon receiving a sync request, a sync proxy checks to see if the addition of this synchronization task to the current computation load exceeds the computation capacity of this proxy. If so, this proxy queries other proxies in the same network about their computation load and capacity information. This proxy, after getting the information, can then divert this incoming sync request to another proxy (in the same network) whose computation load is less. If all proxies on the same network have a full computation load, then the proxy that receives this sync request can return to the requesting handheld device a message indicating that the capacity for all sync proxies are full. It also terminates the connection with the requesting handheld device. Synchronization processes are not performed in this case. With this feature, the present invention also provides a load balancing function not available in the straightforward sync proxy approach.